package mine.code.question.动态规划;

import org.junit.Test;

/**
 * 给定一个32位整数 num，你可以将一个数位从0变为1。请编写一个程序，找出你能够获得的最长的一串1的长度。
 * 示例 1：
 * <p>
 * 输入: num = 1775(11011101111)
 * 输出: 8
 *
 * @author caijinnan
 */
public class 翻转数位 {

    @Test
    public void run() {
        System.out.println(reverseBits(1775));
    }

    public int reverseBits(int num) {
        int cur = 0;
        int insert = 0;
        int res = 1;
        for(int i = 0; i < 32; i++){
            if((num & (1 << i)) != 0){
                cur += 1;
                insert += 1;
            }else{
                insert = cur + 1;
                cur = 0;
            }
            res = Math.max(res , insert);
        }
        return res;
    }
}
